#pragma once
#include "DXAMLCommon.h"





class CCoreServices;
struct XamlAssemblyToken;
class CXString;
enum XamlTypeInfoProviderKind;
class XamlTypeInfoProvider;
struct XamlPropertyToken;
struct XamlTypeToken;
struct XamlTypeNamespaceToken;



class IXamlSchemaContext
{
public: 
	virtual ~IXamlSchemaContext();
	static HRESULT Create(CCoreServices * pCore, XBOOL bAllowXmlnsOnlyReset, xshared_ptr<IXamlSchemaContext> & outXamlSchemaContext);
	virtual HRESULT ResetXmlnsDefinitions() = 0;
	virtual HRESULT AddAssembly(struct XamlAssemblyToken inAssemblyToken, const CXString * pstrAssemblyName) = 0;
	virtual HRESULT AddAssemblyXmlnsDefinition(struct XamlAssemblyToken inAssembly, const CXString * pstrXmlnsUri, struct XamlTypeNamespaceToken inTypeNamespaceToken, const CXString * pstrTypeNamespace) = 0;
	virtual HRESULT GetTypeInfoProvider(enum XamlTypeInfoProviderKind tpk, xshared_ptr<XamlTypeInfoProvider> & outTypeInfoProvider) = 0;
	virtual HRESULT ResolvePropertyName(struct XamlTypeToken tokType, const CXString & pstrPropertyName, struct XamlPropertyToken & rtokProperty, struct XamlTypeToken & rtokPropertyType) = 0;
	virtual HRESULT GetDeclaringType(struct XamlPropertyToken tokProperty, struct XamlTypeToken & tokDeclaringType) = 0;
	virtual XBOOL DoesAllowXmlnsOnlyReset() = 0;
};

